home *** CD-ROM | disk | FTP | other *** search
/ LOGIC Apps / Logic-APPLE_II_APPS.iso / pc / LOGIC Apple II 5.25" Library - DOS Part 2 / DOS032.dsk / GENERATIONS.bas < prev    next >
BASIC Source File  |  2012-02-16  |  3KB  |  64 lines

  1. 100  REM  ILLUSTRATE TECHNIQUES FOR CONTROLLING GENERATIONS OF DATA.
  2. 110  TEXT : HOME : PRINT "THIS PROGRAM SHOWS HOW TO LOOK AFTER    5 GENERATIONS OF A DATA FILE.": PRINT 
  3. 120  PRINT "PREPARE EMPTY FILES FOR 1ST RUN VIA     ]RUN 830": PRINT 
  4. 130  PRINT "WATCH THE TECHNIQUE IN OPERATION BY     ]RUN 200  <== DO THIS SEVERAL TIMES.": PRINT 
  5. 140  PRINT "... THEN ADAPT THE PROGRAM FOR YOUR OWN USE.  FOR PURPOSES OF ILLUSTRATION, THE PROGRAM MAINTAINS SOME ACCOUNTS PAYABLE."
  6. 150  END 
  7. 200 F$ = "PAYABLES": REM  THESE FILES CONCERN ACCOUNTS PAYABLE.
  8. 210 FG = 5: REM  WE WANT TO KEEP THIS MANY GENERATIONS FOR BACKUP.
  9. 220  DIM FD$(FG): REM  STORE THE DATE OF EACH GENERATION OF THE FILE.
  10. 300 D$ =  CHR$(4): REM  CTRL-D TO IDENTIFY COMMANDS TO DOS.
  11. 310  TEXT : HOME : PRINT "I MAINTAIN THE "F$" FILES."
  12. 320  PRINT : PRINT "ACCESSING THE CONTROL FILE ..."
  13. 330  PRINT : PRINT "GENERATION    DATE": PRINT 
  14. 340  PRINT D$"OPEN "F$".CONTROL"
  15. 350  PRINT D$"READ "F$".CONTROL"
  16. 360  FOR I = 1 TO FG: INPUT FD$(I)
  17. 370  PRINT  TAB( 5)I; TAB( 15)FD$(I);
  18. 380  IF I = 1  THEN  PRINT " <-INPUT";
  19. 390  IF I = FG  THEN  PRINT " <-DELETE";
  20. 400  PRINT : NEXT : PRINT : PRINT D$"CLOSE"
  21. 410  INPUT "TODAY'S DATE: ";FD$(0)
  22. 420  FOR I = 1 TO FG: REM  CHECK FOR ERROR- DUPLICATE DATE KEYED.
  23. 430  IF FD$(0) < >FD$(I)  THEN  NEXT : GOTO 460
  24. 440  FLASH : PRINT "ERROR: SAME DATE AS GENERATION "I: NORMAL 
  25. 450  PRINT :I = FG: NEXT : GOTO 410
  26. 460 FO$ = F$ +"." +FD$(0): REM  MAKE NAME OF OUTPUT FILE
  27. 470 I =  LEN(FO$) -30: IF I <1 GOTO 500
  28. 480  FLASH : PRINT "ERROR: DATE IS TOO LONG BY "I" BYTES.": NORMAL 
  29. 490  PRINT : GOTO 410
  30. 500 FI$ = F$ +"." +FD$(1): REM  MAKE NAME OF INPUT FILE
  31. 510  PRINT : PRINT "OK. OPENING THE FILES ..."
  32. 520  PRINT D$"OPEN "FI$
  33. 530  PRINT D$"OPEN "FO$: PRINT D$"DELETE "FO$: PRINT D$"OPEN "FO$
  34. 540  PRINT D$"READ "FI$: INPUT PN$,PA: PRINT D$: REM  GET INPUT DATA.
  35. 550  IF PA = 0 GOTO 620: REM  CHECK FOR END-OF-DATA
  36. 560 A$ =  STR$(PA +.005):A$ =  LEFT$(A$, LEN(A$) -1)
  37. 570  PRINT : PRINT  TAB( 10 - LEN(A$))A$" TO "PN$
  38. 580  PRINT  TAB( 14);: INPUT "DID YOU PAY? ";Y$:Y$ =  LEFT$(Y$ +" ",1)
  39. 590  IF Y$ = "N"  THEN  GOSUB 800: GOTO 540
  40. 600  IF Y$ = "Y" GOTO 540
  41. 610  GOTO 580
  42. 620  PRINT : PRINT "ENTER CREDITOR'S NAME": INPUT ": ";PN$
  43. 630  IF PN$ = "" GOTO 700: REM  NULL MEANS END-OF-JOB
  44. 640  INPUT "ENTER AMOUNT PAYABLE ";PA
  45. 650  IF PA >0  THEN  GOSUB 800
  46. 660  GOTO 620
  47. 700  PRINT D$"WRITE"FO$: PRINT : PRINT 0: PRINT D$"CLOSE": REM  ZERO @ END
  48. 710  PRINT D$"DELETE "F$"."FD$(FG): REM  DELETE OLDEST
  49. 720  PRINT D$"OPEN "F$".CONTROL": REM  PREPARE TO REWRITE CONTROL FILE
  50. 730  PRINT D$"WRITE"F$".CONTROL"
  51. 740  FOR I = 1 TO FG: PRINT FD$(I -1): NEXT : REM  WRITE NEWEST FIRST
  52. 750  PRINT D$"CLOSE"
  53. 760 A$ =  STR$(TA +.005):A$ =  LEFT$(A$, LEN(A$) -1)
  54. 770  PRINT : PRINT "ALL DONE.": PRINT : REM  AND NOW THE BAD NEWS
  55. 780  PRINT "YOU OWE $"A$" TO "TN" CREDITORS.": PRINT : END 
  56. 800  PRINT D$"WRITE "FO$: PRINT PN$: PRINT PA: PRINT D$
  57. 810 TN = TN +1:TA = TA +PA: RETURN : REM   ACCUM TOTAL WRITTEN 
  58. 830  REM  ENTER HERE TO INITIALIZE THE SYSTEM BEFORE THE FIRST RUN.
  59. 840 D$ =  CHR$(4):F$ = "PAYABLES":FG = 5
  60. 850  PRINT D$"OPEN "F$".CONTROL": PRINT D$"WRITE "F$".CONTROL"
  61. 860  FOR I = 1 TO FG: PRINT "PHONY"I: NEXT : PRINT D$"CLOSE"
  62. 870  FOR I = 1 TO FG: PRINT D$"OPEN "F$".PHONY"I: REM  EMPTY FILE
  63. 880  PRINT D$"WRITE "F$".PHONY"I: PRINT : PRINT 0: PRINT D$"CLOSE": NEXT 
  64. 890  PRINT : PRINT FG" PHONY FILES CREATED.": END